import axios from 'axios'  
import { ElMessage } from 'element-plus'  

// 创建一个 axios 实例
const instance = axios.create({  
    timeout: 5000,  
    baseURL: import.meta.env.VITE_APP_BASE_API,
})  
  
// 请求拦截器  
instance.interceptors.request.use(  
    config => {  
        // 请求头添加token
        // if (store.state.UserToken) {  
        //     config.headers.Authorization = `Bearer ${store.state.UserToken}`  
        // }  
        return config  
    },  
    error => Promise.reject(error)  
)  
  
// 响应拦截器  
instance.interceptors.response.use(  
    response => {  
        // 这里可以根据需要处理响应数据
        return response.data  
    },  
    error => {  
        console.error('API 请求错误:', error)  
        if (error.response) {  
            const status = error.response.status  
            let message = '请求错误'  
            switch (status) {  
                case 400:  
                    message = '请求出错'  
                    break  
                case 401:  
                    ElMessage.warning('授权失败，请重新登录')  
                    // 此处可以更新登录状态 
                    // store.commit('LOGIN_OUT')  
                    // setTimeout(() => {  
                    //     window.location.reload()  
                    // }, 1000)  
                    return  
                case 403:  
                    message = '拒绝访问'  
                    break  
                case 404:  
                    message = '请求错误,未找到该资源'  
                    break  
                case 500:  
                    message = '服务器端出错'  
                    break  
                default:  
                    message = `请求错误 [${status}]`  
            }  
            ElMessage.error(message)  
        } else {  
            // 处理网络错误 
            ElMessage.error('连接服务器失败')  
        }  
        return Promise.reject(error)  
    }  
)  
  
// 封装 GET 和 POST 方法  
const http = {  
    get: (url, options = {}) => instance.get(url, options),  
    post: (url, data, options = {}) => instance.post(url, data, options),  
    // 可以继续添加其他 HTTP 方法，如 put, delete 等  
}  
  
export default http
